home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / PROGMISC / PCSSP.LZH / PC-SSP.ZIP / STATDATA.ZIP / SUBST.FOR < prev    next >
Text File  |  1985-11-29  |  5KB  |  119 lines

  1. C
  2. C     ..................................................................
  3. C
  4. C        SUBROUTINE SUBST
  5. C
  6. C        PURPOSE
  7. C           DERIVE A SUBSET VECTOR INDICATING WHICH OBSERVATIONS IN A
  8. C           SET HAVE SATISFIED CERTAIN CONDITIONS ON THE VARIABLES.
  9. C
  10. C        USAGE
  11. C           CALL SUBST (A,C,R,B,S,NO,NV,NC)
  12. C           PARAMETER B MUST BE DEFINED BY AN EXTERNAL STATEMENT IN THE
  13. C           CALLING PROGRAM
  14. C
  15. C        DESCRIPTION OF PARAMETERS
  16. C           A  - OBSERVATION MATRIX, NO BY NV
  17. C           C  - INPUT MATRIX, 3 BY NC, OF CONDITIONS TO BE CONSIDERED.
  18. C                THE FIRST ELEMENT OF EACH COLUMN OF C REPRESENTS THE
  19. C                NUMBER OF THE VARIABLE (COLUMN OF THE MATRIX A) TO BE
  20. C                TESTED, THE SECOND ELEMENT OF EACH COLUMN IS A
  21. C                RELATIONAL CODE AS FOLLOWS
  22. C                     1. FOR LT (LESS THAN)
  23. C                     2. FOR LE (LESS THAN OR EQUAL TO)
  24. C                     3. FOR EQ (EQUAL TO)
  25. C                     4. FOR NE (NOT EQUAL TO)
  26. C                     5. FOR GE (GREATER THAN OR EQUAL TO)
  27. C                     6. FOR GT (GREATER THAN)
  28. C                THE THIRD ELEMENT OF EACH COLUMN IS A QUANTITY TO BE
  29. C                USED FOR COMPARISON WITH THE OBSERVATION VALUES. FOR
  30. C                EXAMPLE, THE FOLLOWING COLUMN IN C
  31. C                          2.
  32. C                          5.
  33. C                         92.5
  34. C                CAUSES THE SECOND VARIABLE TO BE TESTED FOR GREATER
  35. C                THAN OR EQUAL TO 92.5
  36. C           R  - WORKING VECTOR USED TO STORE INTERMEDIATE RESULTS OF
  37. C                ABOVE TESTS ON A SINGLE OBSERVATION. IF CONDITION IS
  38. C                SATISFIED, R(I) IS SET TO 1. IF IT IS NOT, R(I) IS SET
  39. C                TO 0. VECTOR LENGTH IS NC.
  40. C           B  - NAME OF SUBROUTINE TO BE SUPPLIED BY THE USER. IT
  41. C                CONSISTS OF A BOOLEAN EXPRESSION LINKING THE
  42. C                INTERMEDIATE VALUES STORED IN VECTOR R. THE BOOLEAN
  43. C                OPERATORS ARE '*' FOR'AND', '+' FOR 'OR'. EXAMPLE
  44. C                     SUBROUTINE BOOL(R,T)
  45. C                     DIMENSION R(3)
  46. C                     T=R(1)*(R(2)+R(3))
  47. C                     RETURN
  48. C                     END
  49. C                THE ABOVE EXPRESSION IS TESTED FOR
  50. C                     R(1).AND.(R(2).OR.R(3))
  51. C           S  - OUTPUT VECTOR INDICATING, FOR EACH OBSERVATION,
  52. C                WHETHER OR NOT PROPOSITION B IS SATISFIED. IF IT IS,
  53. C                S(I) IS NON-ZERO. IF IT IS NOT, S(I) IS ZERO. VECTOR
  54. C                LENGTH IS NO.
  55. C           NO - NUMBER OF OBSERVATIONS. NO MUST BE > OR = TO 1.
  56. C           NV - NUMBER OF VARIABLES. NV MUST BE > OR = TO 1.
  57. C           NC - NUMBER OF BASIC CONDITIONS TO BE SATISFIED. NC MUST BE
  58. C                GREATER THAN OR EQUAL TO 1.
  59. C
  60. C        REMARKS
  61. C           NONE
  62. C
  63. C        SUBROUTINES AND FUNCTION SUBPROGRAMS REQUIRED
  64. C           B  THE NAME OF ACTUAL SUBROUTINE SUPPLIED BY THE USER MAY
  65. C              BE DIFFERENT (E.G., BOOL), BUT SUBROUTINE SUBST ALWAYS
  66. C              CALLS IT AS B.  IN ORDER FOR SUBROUTINE SUBST TO DO THIS,
  67. C              THE NAME OF THE USER-SUPPLIED SUBROUTINE MUST BE
  68. C              DEFINED BY AN EXTERNAL STATEMENT IN THE CALLING PROGRAM.
  69. C              THE NAME MUST ALSO BE LISTED IN THE ''CALL SUBST''
  70. C              STATEMENT.  (SEE USAGE ABOVE)
  71. C
  72. C        METHOD
  73. C           THE FOLLOWING IS DONE FOR EACH OBSERVATION.
  74. C           CONDITION MATRIX IS ANALYZED TO DETERMINE WHICH VARIABLES
  75. C           ARE TO BE EXAMINED. INTERMEDIATE VECTOR R IS FORMED. THE
  76. C           BOOLEAN EXPRESSION (IN SUBROUTINE B) IS THEN EVALUATED TO
  77. C           DERIVE THE ELEMENT IN SUBSET VECTOR S CORRESPONDING TO THE
  78. C           OBSERVATION.
  79. C
  80. C     ..................................................................
  81. C
  82.       SUBROUTINE SUBST(A,C,R,B,S,NO,NV,NC)
  83.       DIMENSION A(1),C(1),R(1),S(1)
  84. C
  85.       DO 9 I=1,NO
  86.       IQ=I-NO
  87.       K=-2
  88.       DO 8 J=1,NC
  89. C
  90. C        CLEAR R VECTOR
  91. C
  92.       R(J)=0.0
  93. C
  94. C         LOCATE ELEMENT IN OBSERVATION MATRIX AND RELATIONAL CODE
  95. C
  96.       K=K+3
  97.       IZ=C(K)
  98.       IA=IQ+IZ*NO
  99.       IGO=C(K+1)
  100. C
  101. C         FORM R VECTOR
  102. C
  103.       Q=A(IA)-C(K+2)
  104.       GO TO(1,2,3,4,5,6),IGO
  105.     1 IF(Q) 7,8,8
  106.     2 IF(Q) 7,7,8
  107.     3 IF(Q) 8,7,8
  108.     4 IF(Q) 7,8,7
  109.     5 IF(Q) 8,7,7
  110.     6 IF(Q) 8,8,7
  111.     7 R(J)=1.0
  112.     8 CONTINUE
  113. C
  114. C        CALCULATE S VECTOR
  115. C
  116.     9 CALL B(R,S(I))
  117.       RETURN
  118.       END
  119.